package sv.gob.mtps.sib.dao;

import java.util.List;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import sv.gob.mtps.sib.model.Objetoespecifico;
import sv.gob.mtps.sib.model.ProductoHasObjetoespecifico;

@Repository
public class ObjetoespDAOImpl implements ObjetoespDAO {

	@Autowired
	private SessionFactory sessionFactory;

	@Override
	public void addOE(Objetoespecifico oe) {
		sessionFactory.getCurrentSession().save(oe);
		
	}

	@Override
	public void updateOE(Objetoespecifico oe) {
		sessionFactory.getCurrentSession().update(oe);		
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Objetoespecifico> listOE() {
		return sessionFactory.getCurrentSession()
				.createQuery("from Objetoespecifico").list();
	}

	@Override
	public void removeOE(Integer id) {
		Objetoespecifico oe = (Objetoespecifico)sessionFactory
				.getCurrentSession().load(Objetoespecifico.class, id);
		if (oe != null) {
			sessionFactory.getCurrentSession().delete(oe);
		}
	}

	@Override
	public Objetoespecifico findOE(Integer id) {
		return (Objetoespecifico) sessionFactory.getCurrentSession().get(
				Objetoespecifico.class, id);
	}
	
	/*
	 * @JCP
	 * Implementacion del soporte a ProductoHasObjetoespecifico
	 */

	@Override
	public void addPOE(ProductoHasObjetoespecifico poe) {
		sessionFactory.getCurrentSession().save(poe);
		
	}

	@Override
	public void updatePOE(ProductoHasObjetoespecifico poe) {
		sessionFactory.getCurrentSession().update(poe);
		
	}

	@Override
	public List<ProductoHasObjetoespecifico> listPOE() {
		// TODO Auto-generated method stub
		return sessionFactory.getCurrentSession().createQuery("from ProductoHasObjetoespecifico").list();
	}

	@Override
	public void removePOE(Integer id) {
		ProductoHasObjetoespecifico poe = (ProductoHasObjetoespecifico) sessionFactory.getCurrentSession().load(ProductoHasObjetoespecifico.class, id);
		if(poe!=null){
			sessionFactory.getCurrentSession().delete(poe);
		}
	}

	@Override
	public ProductoHasObjetoespecifico findPOE(Integer id) {
		// TODO Auto-generated method stub
		return (ProductoHasObjetoespecifico) sessionFactory.getCurrentSession().get(ProductoHasObjetoespecifico.class, id);
	}

}
